home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fatted Calf
/
The Fatted Calf.iso
/
Applications
/
Audio
/
Patchmix
/
XWindowsSource
/
xevent.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-03-28
|
4KB
|
169 lines
static char rcsid[] = "$Header: xevent.c,v 1.5 91/02/13 09:46:53 mara Exp $";
/* xevent.c
*
* Written by Mara Helmuth
*
* Description: X graphics functions in C
* called by graphics class
* for Cmix X graphical interface
*
* $Log: xevent.c,v $
* Revision 1.5 91/02/13 09:46:53 mara
* panel fixes
*
* Revision 1.4 90/09/08 12:50:21 mara
* side panel
*
* Revision 1.3 90/09/05 22:11:23 mara
* +,-,*,/ options added
*
* Revision 1.2 90/09/02 18:19:38 mara
* NeXT fixes
*
* Revision 1.1 90/08/27 17:10:03 mara
* Initial revision
*
*/
#include "plus.h"
int event_loop()
{
XEvent event;
for (;;) {
XNextEvent(dpy, &event);
if (lxt_event(&event))
continue;
switch (event.type) {
case MotionNotify:
pm_select((XPointerMovedEvent *) &event);
break;
case ButtonPress:
bp_select((XButtonPressedEvent *) &event);
break;
default:
break;
}
}
}
pm_select(XPointerMovedEvent *event)
{
int x, y;
x= *((int *) canvas_get(canvas, LXC_XOFFSET));
y= *((int *) canvas_get(canvas, LXC_YOFFSET));
if (event->state & Button1Mask)
ugen_select(event->x+x, event->y+y);
}
bp_select(XButtonPressedEvent *event)
{
int vx, vy;
int fracbar = MFRAME_WIDTH/header_spaces;
int xloc = event->x;
int yloc = event->y;
vx= *((int *) canvas_get(canvas, LXC_XOFFSET));
vy= *((int *) canvas_get(canvas, LXC_YOFFSET));
if(event->window == canvas_win) {
if(xloc+vx < 40 && yloc+vy < 60) {
mbar_setting = UGEN_SELECT;
if(ugen[ugen_no].made)
ugen_no++;
ugen[ugen_no].type = ADD;
printf("add selected ugen_no = %d\n",ugen_no);
first_add = 1;
}
else if(xloc+vx < 40 && yloc+vy >= 60 && yloc+vy < 120) {
mbar_setting = UGEN_SELECT;
if(ugen[ugen_no].made)
ugen_no++;
ugen[ugen_no].type = SUBTRACT;
printf("sub selected ugen_no = %d\n",ugen_no);
first_sub = 1;
}
else if(xloc+vx < 40 && yloc+vy >= 120 && yloc+vy < 180) {
mbar_setting = UGEN_SELECT;
if(ugen[ugen_no].made)
ugen_no++;
ugen[ugen_no].type = MULTIPLY;
printf("mult selected ugen_no = %d\n",ugen_no);
first_mult = 1;
}
else if(xloc+vx < 40 && yloc+vy >= 180 && yloc+vy < 240) {
mbar_setting = UGEN_SELECT;
if(ugen[ugen_no].made)
ugen_no++;
ugen[ugen_no].type = DIVIDE;
printf("divide selected ugen_no = %d\n",ugen_no);
first_div = 1;
}
else if(xloc+vx < 40 && yloc+vy > 240 && yloc+vy < 290 && first_out) {
mbar_setting = UGEN_SELECT;
if(ugen[ugen_no].made)
ugen_no++;
printf("ugen %d\n",(ugen[ugen_no].type = OUT));
ugen[ugen_no].type = OUT;
}
else {
switch (event->button) {
case Button1:
switch(mbar_setting) {
case UGEN_SELECT:
printf("button1 UGEN_SELECT\n");
ugen_select(event->x+vx, event->y+vy);
break;
case UGEN_CONVERT:
printf("button1 UGEN_CONVERT\n");
break;
case PARAM_SET:
printf("button1 PARAM_SET\n");
set_params(event->x+vy, event->y+vy);
break;
default:
printf("button1 no mbar_setting\n");
break;
}
break;
case Button2: // doesn't work on NeXT - use menubar
printf("button2\n");
set_params(event->x+vy, event->y+vy);
break;
case Button3:
printf("button3\n");
connector(event->x+vx, event->y+vy);
break;
}
}
}
else if(event->window == mbar_win) {
if(xloc <= fracbar) {
mbar_setting = UGEN_SELECT;
menu_show(generator_menu, event);
}
else if(xloc<=2*fracbar) {
mbar_setting = UGEN_SELECT;
menu_show(processor_menu,event);
}
else if(xloc<=3*fracbar) {
printf("ugen convert\n");
mbar_setting = UGEN_CONVERT;
menu_show(converter_menu,event);
}
else if(xloc<=4*fracbar) {
printf("parameter to be set\n");
mbar_setting = PARAM_SET;
}
else if(xloc<=5*fracbar) menu_show(connect_menu,event);
else if(xloc<=6*fracbar) menu_show(options_menu,event);
else if(xloc<=7*fracbar) menu_show(help_menu,event);
}
}